package transitarios;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import transitarios.api.IGestaoVeiculos;
import transitarios.api.IVeiculo;

public class GestaoVeiculos implements IGestaoVeiculos, Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * @return the gestaoVeiculos
	 */
	@Override
	public Map<String, IVeiculo> getVeiculos() {
		return veiculos;
	}

	public GestaoVeiculos(Map<String, IVeiculo> veiculos) {
		this.veiculos = veiculos;
	}

	public GestaoVeiculos() {
		this.veiculos = new TreeMap<String, IVeiculo>();
	}

	/**
	 * @param veiculos
	 *            the gestaoVeiculos to set
	 */
	@Override
	public void setVeiculos(Map<String, IVeiculo> veiculos) {
		this.veiculos = veiculos;
	}

	private Map<String, IVeiculo> veiculos;

	@Override
	public void adiciona(IVeiculo entidade) {
		this.veiculos.put(entidade.getMatricula(), entidade);

	}

	@Override
	public void remove(String codigo) {
		this.veiculos.remove(codigo);

	}

	@Override
	public void remove(IVeiculo entidade) {

		this.veiculos.remove(entidade.getMatricula());

	}

	@Override
	public List<IVeiculo> devolveTodos() {

		return new ArrayList<IVeiculo>(this.veiculos.values());
	}

	@Override
	public IVeiculo devolve(String codigo) {
		return this.veiculos.get(codigo);
	}

	@Override
	public boolean existe(String codigo) {
		return (this.veiculos.get(codigo) == null ? false : true);
	}

	@Override
	public boolean existe(IVeiculo p) {

		return (this.veiculos.get(p.getMatricula()) == null ? false
				: true);
	}

	@Override
	public int contagem() {

		return this.veiculos.size();
	}

}
